package pe.edu.upc.dew.grupo3a.dao;

import java.util.List;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

//import pe.edu.upc.dew.grupo3a.model.Cine;
import pe.edu.upc.dew.grupo3a.model.Pelicula;

public class PeliculaDaoJdbc extends SimpleJdbcDaoSupport implements
PeliculaDao{
 
	@Override
	public Pelicula getPeliculaPorCodigo(String codigo) {
		// TODO Auto-generated method stub
		try {
			return getSimpleJdbcTemplate()
			.queryForObject(
					"select codigopelicula, nombre, genero, clasificacion, nacionalidad, director," +
					"sinopsis,duracion,fechaEstreno,fotoPath,estado from pelicula where codigopelicula=?",
					new BeanPropertyRowMapper<Pelicula>(Pelicula.class),
					codigo);
			
		} catch(DataAccessException ex ){
			return null;
		}
	}

	@Override
	public List<Pelicula> getPeliculas() {
		return getSimpleJdbcTemplate().query(
				"select codigopelicula, nombre, genero, clasificacion, nacionalidad, director," +
				"sinopsis,duracion,fechaEstreno,fotoPath,estado from pelicula",
				new BeanPropertyRowMapper<Pelicula>(Pelicula.class));	
	}

	@Override
	public void updatePelicula(Pelicula pelicula) {
		getSimpleJdbcTemplate().update("Update pelicula set " +
				"nombre=?, genero=?, clasificacion=?, nacionalidad=?, director=?," +
				"sinopsis=?,duracion=?,fechaEstreno=?,fotoPath=?,estado=? " +
				"where codigopelicula=?",
				pelicula.getNombre(),pelicula.getGenero(), pelicula.getClasificacion(),
				pelicula.getNacionalidad(),pelicula.getDirector(),pelicula.getSinopsis(),
				pelicula.getDuracion(),pelicula.getFechaEstreno(),pelicula.getFotoPath(),
				pelicula.getEstado(),pelicula.getCodigoPelicula());
	}

	@Override
	public void insertPelicula(Pelicula pelicula) {
		getSimpleJdbcTemplate().update("Insert into pelicula (codigopelicula, nombre, genero, " +
				"clasificacion, nacionalidad, director,sinopsis,duracion,fechaEstreno,fotoPath,estado)" +
				"values (?,?,?,?,?,?,?,?,?,?,?)",
				pelicula.getCodigoPelicula(), pelicula.getNombre(),pelicula.getGenero(), 
				pelicula.getClasificacion(), pelicula.getNacionalidad(),pelicula.getDirector(),
				pelicula.getSinopsis(), pelicula.getDuracion(),pelicula.getFechaEstreno(),
				pelicula.getFotoPath(), pelicula.getEstado());
	}
 
	@Override
	public void deletePeliculaPorCodigo(String codigopelicula) {
		getSimpleJdbcTemplate().update("Delete from pelicula where codigopelicula=?",codigopelicula);		
	}

	@Override
	public List<Pelicula> getPeliculasPorGenero(String genero) {
		return getSimpleJdbcTemplate().query(
				"select codigopelicula, nombre, genero, clasificacion, nacionalidad, director," +
				"sinopsis,duracion,fechaEstreno,fotoPath,estado from pelicula where genero=?",
				new BeanPropertyRowMapper<Pelicula>(Pelicula.class),genero);	
	}

	@Override
	public List<Pelicula> getPeliculasEnEstreno(String estreno) {
		return getSimpleJdbcTemplate().query(
				"select codigopelicula, nombre, genero, clasificacion, nacionalidad, director," +
				"sinopsis,duracion,fechaEstreno,fotoPath,estado from pelicula where estado=?",
				new BeanPropertyRowMapper<Pelicula>(Pelicula.class),estreno);	
	}

}
